import axios from 'axios'
// 方式1.封装成传入3个参数
export function request(config,success,failure){
    // 1.创建axios实例
    const instance = axios.create({
        baseURL: 'http://152.136.185.210:7878/api/hy66/',
        timeout: 5000
    })
    // 2.发送真正的网络请求
    instance(config).then(res=>{
        // console.log(res);
        success(res);
    })
    .catch(err=>{
        // console.log(err);
        failure(err);
    })
}
// 方式2.封装成传入一个对象
export function request2(config){
    // 1.创建axios实例
    const instance = axios.create({
        baseURL: 'http://152.136.185.210:7878/api/hy66/',
        timeout: 5000
    })
    // 2.发送真正的网络请求
    instance(config.baseConfig).then(res=>{
        // console.log(res);
        config.success(res);
    })
    .catch(err=>{
        // console.log(err);
        config.failure(err);
    })
}
// 方式3:封装成promise
export function request3(config){
    return new Promise((resolve, reject)=>{
        // 1.创建axios实例
        const instance = axios.create({
            baseURL: 'http://152.136.185.210:7878/api/hy66/',
            timeout: 5000
        })
        // 2.发送真正的网络请求
        instance(config).then(res=>{
            resolve(res)
        })
        .catch(err=>{
            reject(err)
        })
    })
}
// 方式4(终极方案):返回instance对象可以与promise效果相同
export function request4(config){
        // 1.创建axios实例
        const instance = axios.create({
            baseURL: 'http://152.136.185.210:7878/api/hy66/',
            timeout: 5000
        })
        // 2.发送真正的网络请求,instance就是promise对象,所以可以直接返回
        return instance(config)
}
// l拦截器
export function request5(config){
    
    const instance = axios.create({
        baseURL: 'http://152.136.185.210:7878/api/hy66/',
        timeout: 5000
    })
    //请求拦截instance axios的实例 
    //如果全局拦截  axios.interceptors.request.use()
    // 两个参数 请求成功
    instance.interceptors.request.use(config=>{
        console.log(config);
        // 1.config信息不符合服务器的要求

        // 2.每次请求可以在界面中显示一个请求图标

        // 3.某些网络请求(登录),必须携带特殊的信息token
        
        
        return config;
        
    },err=>{
        console.log(err);
    })


    // 响应拦截
    instance.interceptors.response.use(res=>{
        console.log(res);
        // 返回数据,data是真正的结果
        return res.data;
    },err=>{
        console.log(err);
    })
    
    return instance(config)
}